//
//  CZStatusListViewModel.swift
//  WeiBo001
//
//  Created by ZhiQiang Li on 16/7/24.
//  Copyright © 2016年 ZhiQiang Li. All rights reserved.
//

import UIKit

class CZStatusListViewModel: NSObject {
    
    
    // 全局的模型数组
    lazy var staList:[CZStatusViewModel] = [CZStatusViewModel]()
}

extension CZStatusListViewModel{
    func loadHomeData(isPullUp: Bool, isFinish:(isSuc: Bool,count: Int)->()){
        /*
        - 如果是上啦记载更多  需要给服务器maxid   sinceid == 0
        - 如果是下拉刷新  需要给服务器sinceId   maxId == 0
        - 如果sinceid == 0  maxid == 0  默认服务器返回最新的20条数据
        */
        
        var maxId:Int64 = 0
        var sinceId: Int64 = 0
        // 上啦加载更多
        if isPullUp {
            maxId = staList.last?.status?.id ?? 0
            // 因为服务器返回来重复数据 需要程序员自己处理
            if maxId > 0 {
                maxId -= 1
            }
        }else {
            // 下拉刷新
            sinceId = staList.first?.status?.id ?? 0
        }
        
        CZNetworkTools.sharedTools.homeLoadData(sinceId, maxId: maxId, success: { (response) -> () in
            //  print("请求成功:\(response)")
            
            // 判断他是否为nil 而且是否可以转成数组
            guard let res = response?["statuses"] as?[[String: AnyObject]] else{
                isFinish(isSuc: false, count: 0)
                return
            }
            // 定义一个临时可变数组
            var tempArray:[CZStatusViewModel] = [CZStatusViewModel]()
            // 遍历数组
            for dic in res {
                // 创建一个模型
                let status = HomeModel(dict: dic)
                // 创建一个viewModel
                let statusViewModel = CZStatusViewModel(status:status)
                
                // 添加viewModel
                tempArray.append(statusViewModel)
                
            }
            // 上啦加载更多
            if isPullUp {
                self.staList = self.staList + tempArray
                isFinish(isSuc: true, count: -1)
            }else {
                // 下拉刷新
                self.staList = tempArray + self.staList
                isFinish(isSuc: true, count: tempArray.count)
            }
            
            
            }) { (error) -> () in
                print("请求失败:\(error)")
                isFinish(isSuc: false, count: 0)
        }
        
    }
}

